﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace AplicacionUrHardwarez
{
    public partial class formModSalida : Form
    {
        formProductoDetalle formularioProductoDetalle;
        public string recibirId
        {
            get { return lblIdProducto.Text; }
            set { lblIdProducto.Text = value; }
        }
        public string recibirFecha
        {
            get { return txtFecha.Text; }
            set { txtFecha.Text = value; }
        }

        public string recibirSalidas
        {
            get { return txtSalidaCantidad.Text; }
            set { txtSalidaCantidad.Text = value; }
        }

        //public string fechaOriginal2
        //{
        //    get { return lblFO.Text; }
        //    set { lblFO.Text = txtFecha.Text; }
        //}

        public formModSalida()
        {
            InitializeComponent();
        }

        private void formModSalida_Load(object sender, EventArgs e)
        {
            txtSalidaCantidad.Text = recibirSalidas;
            txtFecha.Text = recibirFecha;
        }

        private void btnVolver_Click(object sender, EventArgs e)
        {
            AlmacenEntities productosContext = new AlmacenEntities();
            formProductoDetalle formDetalles = new formProductoDetalle();
            formDetalles.recibirId = lblIdProducto.Text;
            formDetalles.Visible = true;
            this.Visible = false;
            formDetalles.Location = this.Location;
            //productosContext.Dispose(); 
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
          using (AlmacenEntities productosContext =
                new AlmacenEntities())
            {
                Guid obtenerGuid = new Guid(lblIdProducto.Text);
                int SalidaInt = int.Parse(txtSalidaCantidad.Text);

                DateTime FechaOriginal = DateTime.Parse(recibirFecha);
        
                //DateTime FechaOriginal = DateTime.Parse(txtFecha.Text);

                // estandarizar el formato de fecha
                //txtFecha.Text = DateTime.Parse(txtFecha.Text).ToString("yyyy-MM-dd");
                //DateTime SalidaFecha = DateTime.Parse(txtFecha.Text);
                //DateTime dt = new DateTime(SalidaFecha.Year, SalidaFecha.Month, SalidaFecha.Day);

      
                var guardarSalida = (from s in productosContext.Salidas
                                     where (s.IdProducto == obtenerGuid && s.Fecha == FechaOriginal.Date)
                                     select s).First();
      
                // Añadimos los valores a la tabla de Salidas, incluyendo los cambios. 
                guardarSalida.Fecha = DateTime.Parse(txtFecha.Text).Date;
                guardarSalida.StockOut = SalidaInt;
 
                
                //Try catch para asegurar que la aplicacion gestione el error correctamente en el caso de que ocurra un error al guardar
                try
                {
                    formProductoDetalle formularioProductoDetalle = new formProductoDetalle();
                    productosContext.SaveChanges();
                    MessageBox.Show(" Producto actualizado correctamente");
                    //Cerramos formulario modificar
                    this.Close();
                    //formProductoDetalle formularioProductoDetalle = new formProductoDetalle();
                    formularioProductoDetalle.recibirId = lblIdProducto.Text;
                    formularioProductoDetalle.Visible = true;
                    this.Visible = false;
                    formularioProductoDetalle.Location = this.Location;
                    
                }
                catch (Exception)
                {
                    //Console.WriteLine(ex.InnerException);
                    MessageBox.Show("No se ha podido actualizar el registro");
                }

            }

        }
  
        }
    }

